
class Date{
    public int year;
    public int month;
    public int day;
    public void setDate(Date this,int y,int m,int d){    //这个Date this是隐含的，代表是谁调用了这个方法
        this.year=y;                                          //这个一般不写
        this.month=m;
        this.day=d;
    }
    public void setDate1(int year,int month,int day){
        year=year;        //这个调用后，对像的year，month，day均为0；
                         //因为你这个方法的形式参数跟成员变量名字一样，由于局部优先
        month=month;       //所以方法内部的这些赋值均是给形式参数赋值了，没有给成员变量的year，month，day赋值
        day=day;           //所以解决问题，就是加上this;;  this.year=year;  this.month=month;  thiis.day=day;
    }
    public void showDate(){
        System.out.println(year+":"+month+":"+day);
    }
}
class Person {
    public String name;    //叫成员变量，可以不初始化，但局部变量一定要初始化，否则会报错
                           //成员变量不初始化的，编译器会默认值，对于引用类型像String类型默认null,
    public int age;         //对于float，int这种类型默认0值，boolean默认false，char默认\u0000
 public String phone;

 public void eat(){   //这些类中的方法是放在内存的方法区
     System.out.println("吃饭");
 }
 public void sleep(){
     System.out.println("睡觉");
 }
 public void show(){
     System.out.println("姓名:"+name+" "+"年龄："+age+" "+"电话："+phone);
 }
}
public class Text {
    public static void main(String[] args) {
        Date date1=new Date();
        date1.setDate(2023,9,25);
        date1.showDate();
    }
    public static void main1(String[] args) {

        Person person1=new Person();   //person1为引用变量，在栈中存放的这个对象的地址，具体对象的内容在堆上放的呢
        person1.name="张三";
        person1.age=19;
        person1.phone="12344";
        person1.show();

        Person person2=new Person();
        person2.name="李四";
        person2.age=29;
        person2.phone="1704";
        person2.show();

    }

}
